package com.forte.fortePoiUtils.writer;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.forte.fortePoiUtils.writer.HSSFWriter.HSSFWriter;
import com.forte.fortePoiUtils.writer.XSSFWriter.XSSFWriter;

/**
 * Excel写入助手的抽象类<br>
 * 包含大量的方法和丰富的参数选择供使用<br>
 * 目前仅一个核心抽象方法:public abstract <T> boolean writeToFile(List<T> , Map<String ,
 * String>, String, int, int) throws Exception; <br>
 * 目前两个实现类():<br>
 * <ul>
 * <li>{@link HSSFWriter} -> 对2003版本的excel文件进行操作</li>
 * <li>{@link XSSFWriter} -> 对2010版本的excel文件进行操作</li>
 * </ul>
 * 
 * 
 * @author ForteScarlet <div>
 *         <ul>
 *         <li> ---><a href='https://gitee.com/ForteScarlet' target='_block'>码云个人地址</a></li> </li>
 *         </ul>
 *         </div>
 */
public abstract class ExcelWriter {

	/** excel文件所在位置的File对象的流 */
	private OutputStream excelFileStream;

	/**
	 * 构造方法
	 * 
	 * @param filePath
	 *            文件路径
	 * @param fileName
	 *            文件名称
	 */
	public ExcelWriter(String filePath, String fileName) throws FileNotFoundException {
		File excelFile = new File(filePath + "/" + fileName);
		// 创建文件父目录
		excelFile.getParentFile().mkdirs();

		excelFileStream = new FileOutputStream(excelFile);
	}



	/**
	 * 构造方法
	 * 
	 * @param filePath
	 *            文件路径的File对象
	 */
	public ExcelWriter(File filePath) throws FileNotFoundException {
		// 创建文件父目录
		filePath.getParentFile().mkdirs();

		excelFileStream = new FileOutputStream(filePath);
	}

	/**
	 * 构造方法
	 * @param outputStream
	 */
	public ExcelWriter(OutputStream outputStream){
		excelFileStream = outputStream;
	}


	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow, int startCol) throws Exception {
		List<T> list = new ArrayList<>();
		list.add(object);
		return writeToFile(list, result, comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator, int startRow,
			int startCol) throws Exception {
		return writeOne(object, result, comparator, null, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeOne(object, result, null, sheetName, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, int startRow, int startCol)
			throws Exception {
		return writeOne(object, result, null, null, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, String sheetName) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, sheetName, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, null, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator, String sheetName) throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, sheetName, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator) throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, null, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, String sheetName, int startRow) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, sheetName, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, int startRow) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, null, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator, String sheetName, int startRow)
			throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, sheetName, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator, int startRow) throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, null, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, String sheetName, int startRow, int startCol) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, sheetName, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, int startRow, int startCol) throws Exception {
		return writeOne(object, new HashMap<String, String>(), null, null, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Comparator<String> comparator, int startRow, int startCol)
			throws Exception {
		return writeOne(object, new HashMap<String, String>(), comparator, null, startRow, startCol);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param result
	 *            字段的对应关系
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, String sheetName) throws Exception {
		return writeOne(object, result, null, sheetName, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result) throws Exception {
		return writeOne(object, result, null, null, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator,
			String sheetName) throws Exception {
		return writeOne(object, result, comparator, sheetName, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator)
			throws Exception {
		return writeOne(object, result, comparator, null, 0, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, String sheetName, int startRow)
			throws Exception {
		return writeOne(object, result, null, sheetName, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param sheetName
	 *            表格名
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, int startRow) throws Exception {
		return writeOne(object, result, null, null, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow) throws Exception {
		return writeOne(object, result, comparator, sheetName, startRow, 0);
	};

	/**
	 * 将单个对象写入Excel
	 * 
	 * @param object
	 *            单个对象
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表格名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeOne(T object, Map<String, String> result, Comparator<String> comparator, int startRow)
			throws Exception {
		return writeOne(object, result, comparator, null, startRow, 0);
	};

	//// ——————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, null, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, null, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, String sheetName) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, sheetName, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator, String sheetName)
			throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, sheetName, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, String sheetName, int startRow) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, sheetName, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, int startRow) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, null, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator, String sheetName, int startRow)
			throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, sheetName, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator, int startRow) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, null, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, String sheetName, int startRow, int startCol) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, sheetName, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, int startRow, int startCol) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), null, null, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Comparator<String> comparator, int startRow, int startCol)
			throws Exception {
		return writeToFile(objects, new HashMap<String, String>(), comparator, null, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param result
	 *            字段的对应规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, String sheetName) throws Exception {
		return writeToFile(objects, result, null, sheetName, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result) throws Exception {
		return writeToFile(objects, result, null, null, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName) throws Exception {
		return writeToFile(objects, result, comparator, sheetName, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator)
			throws Exception {
		return writeToFile(objects, result, comparator, null, 0, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param result
	 *            字段的对应规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, String sheetName, int startRow)
			throws Exception {
		return writeToFile(objects, result, null, sheetName, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, int startRow) throws Exception {
		return writeToFile(objects, result, null, null, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow) throws Exception {
		return writeToFile(objects, result, comparator, sheetName, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			int startRow) throws Exception {
		return writeToFile(objects, result, comparator, null, startRow, 0);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param result
	 *            字段的对应规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeToFile(objects, result, null, sheetName, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, int startRow, int startCol)
			throws Exception {
		return writeToFile(objects, result, null, null, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow, int startCol) throws Exception {
		return writeToFile(objects, result, comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将对象集合写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应规则
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeList(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			int startRow, int startCol) throws Exception {
		return writeToFile(objects, result, comparator, null, startRow, startCol);
	};

	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, String sheetName) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, sheetName, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, null, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator, String sheetName) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, sheetName, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象集合
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, null, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, String sheetName, int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, sheetName, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, null, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator, String sheetName, int startRow)
			throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, sheetName, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator, int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, null, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, String sheetName, int startRow, int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, sheetName, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, int startRow, int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), null, null, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param comparator
	 *            字段的排序规则
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Comparator<String> comparator, int startRow, int startCol)
			throws Exception {
		return writeToFile(Arrays.asList(objects), new HashMap<String, String>(), comparator, null, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, String sheetName) throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, sheetName, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result) throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, null, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName) throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, sheetName, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator)
			throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, null, 0, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, String sheetName, int startRow)
			throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, sheetName, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, null, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序关系
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, sheetName, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序关系
	 * @param startRow
	 *            起始行
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator,
			int startRow) throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, null, startRow, 0);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param sheetName
	 *            表名
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, String sheetName, int startRow,
			int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, sheetName, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, int startRow, int startCol)
			throws Exception {
		return writeToFile(Arrays.asList(objects), result, null, null, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序关系
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow, int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, sheetName, startRow, startCol);
	};

	/**
	 * 将对象数组写入Excel文件
	 * 
	 * @param objects
	 *            对象数组
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序关系
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public <T> boolean writeArray(T[] objects, Map<String, String> result, Comparator<String> comparator,
			int startRow, int startCol) throws Exception {
		return writeToFile(Arrays.asList(objects), result, comparator, null, startRow, startCol);
	};

	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////


//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, null, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, null, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, String sheetName) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, sheetName, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param sheetName
//	 *            表名
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator, String sheetName)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, sheetName, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, String sheetName, int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, sheetName, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, null, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param sheetName
//	 *            表名
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator, String sheetName, int startRow)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, sheetName, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator, int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, null, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, String sheetName, int startRow, int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, sheetName, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, int startRow, int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), null, null, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param sheetName
//	 *            表名
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator, String sheetName, int startRow,
//			int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, sheetName, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Comparator<String> comparator, int startRow, int startCol)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), new HashMap<String, String>(), comparator, null, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param result
//	 *            字段的对应规则
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, String sheetName) throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, sheetName, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result) throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, null, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param sheetName
//	 *            表名
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator,
//			String sheetName) throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, sheetName, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, null, 0, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param result
//	 *            字段的对应规则
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, String sheetName, int startRow)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, sheetName, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, null, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param sheetName
//	 *            表名
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator,
//			String sheetName, int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, sheetName, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param startRow
//	 *            起始行
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator,
//			int startRow) throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, null, startRow, 0);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param result
//	 *            字段的对应规则
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, String sheetName, int startRow,
//			int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, sheetName, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, int startRow, int startCol)
//			throws Exception {
//		return writeToFile(mapper.selectAll(), result, null, null, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param sheetName
//	 *            表名
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator,
//			String sheetName, int startRow, int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, sheetName, startRow, startCol);
//	};
//
//	/**
//	 * 将对象集合写入Excel文件 - 整合通用Mapper
//	 *
//	 * @param objects
//	 *            对象集合
//	 * @param result
//	 *            字段的对应规则
//	 * @param comparator
//	 *            字段的排序规则
//	 * @param startRow
//	 *            起始行
//	 * @param startCol
//	 *            起始列
//	 * @return 布尔值 ， 代表是否成功写入
//	 * @throws Exception
//	 * @author ForteScarlet
//	 */
//	public <T> boolean writeMapperToFile(Mapper<T> mapper, Map<String, String> result, Comparator<String> comparator,
//			int startRow, int startCol) throws Exception {
//		return writeToFile(mapper.selectAll(), result, comparator, null, startRow, startCol);
//	};

	
	
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	//// ———————————————————————————————————————————————————————————————————————————————————————
	//// ////
	
	/**
	 * 将对象集合写入Excel文件,所有重载方法的基础方法。一切重载方法均以此方法为基准<br>
	 * 对2007+版本进行写入时，为了防止内存溢出，当字段数 * （对象数量 + 1） 时，将会使用SXSSFWorkbook对象进行写入，否则将会使用XSSFWorkbook对象进行写入<br>
	 * 
	 * @param objects
	 *            对象集合
	 * @param result
	 *            字段的对应关系
	 * @param comparator
	 *            字段的排序规则
	 * @param sheetName
	 *            表名
	 * @param startRow
	 *            起始行
	 * @param startCol
	 *            起始列
	 * @return 布尔值 ， 代表是否成功写入
	 * @throws Exception
	 * @author ForteScarlet
	 */
	public abstract <T> boolean writeToFile(List<T> objects, Map<String, String> result, Comparator<String> comparator,
			String sheetName, int startRow, int startCol) throws Exception;

	/**
	 * 获取文件流
	 * 
	 * @return
	 * @author ForteScarlet
	 */
	protected OutputStream getOutPutStream() {
		return excelFileStream;
	}

	/**
	 * 关闭流
	 * @throws IOException
	 */
	protected void streamClose() throws IOException {
		excelFileStream.close();
	}

}
